#ifndef CITYDAO_H
#define CITYDAO_H

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QString>

// 城市数据结构
struct City {
    QString cityId;
    QString cityName;
};

class CityDao {
public:
    // 构造函数，初始化数据库连接
    CityDao(const QString& host, const QString& database, const QString& username, const QString& password);
    
    // 析构函数，关闭数据库连接
    ~CityDao();
    
    // 打开数据库连接
    bool openDatabase();
    
    // 关闭数据库连接
    void closeDatabase();
    
    // 检查数据库连接状态
    bool isDatabaseOpen() const;
    
    // 插入城市数据
    bool insertCity(const City& city);
    
    // 删除城市数据
    bool deleteCity(const QString& cityId);
    
    // 更新城市数据
    bool updateCity(const City& city);
    
    // 查询单个城市数据
    City* getCity(const QString& cityId);
    
    // 查询所有城市数据
    QList<City>* getAllCities();
    
    // 新增：通过城市名模糊查询城市ID
    QList<City>* searchCitiesByName(const QString& cityName);
    
    // 通过城市名查询城市ID
    City* getCityIDByName(const QString& cityName);
    
private:
    QSqlDatabase db;
    QString host;
    QString database;
    QString username;
    QString password;
};

#endif // CITYDAO_H
